package com.cy.pj.notice.service.impl;

import com.cy.pj.notice.common.exception.ServiceException;
import com.cy.pj.notice.pojo.dao.SysNotice;
import com.cy.pj.notice.pojo.dao.SysNoticeDao;
import com.cy.pj.notice.service.SysNoticeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 公告业务的具体实现
 * 1)核心业务（调用数据层的方法操作数据）
 * 2)拓展业务（日志记录、权限控制、事务控制、缓存）
 */
@Service
public class SysNoticeServiceImpl implements SysNoticeService {
    //初始化日志对象（org.slf4j.*)
    private static final Logger log= LoggerFactory.getLogger(SysNoticeServiceImpl.class);//通过工厂创建日志对象
    @Autowired
    private SysNoticeDao sysNoticeDao;

    //如果没有@Autowired注解，可通过构造方法来完成注入
   /* public SysNoticeServiceImpl(SysNoticeDao sysNoticeDao){
        this.sysNoticeDao = sysNoticeDao;
    }
    */
    @Override
    public List<SysNotice> findNotices(SysNotice entity) {
        long t1 = System.currentTimeMillis();
        log.info("method start {}",t1);//这里的{}表示占位符
        List<SysNotice> list = sysNoticeDao.selectNotice(entity);
        long t2 = System.currentTimeMillis();
        log.info("method end {}",t2);
        return list;
    }

    @Override
    public int insertNotice(SysNotice entity) {
        int row = sysNoticeDao.insertNotice(entity);
        return row;
    }

    @Override
    public SysNotice findById(Long id) {
        SysNotice sysNotice = sysNoticeDao.findById(id);
        if(sysNotice==null){
            throw new ServiceException("可能记录已经不存在了");
        }
        return sysNotice;
    }

    @Override
    public int updateNotice(SysNotice entity) {
        int row = sysNoticeDao.updateNotice(entity);
        return row;
    }

    @Override
    public int deleteById(Long... id) {
        int row = sysNoticeDao.deleteById(id);
        if(row==0){
            /*这种异常是不够规范的，范围太大了，不便于我们去查找异常信息
           throw new RuntimeException("记录可能已经不存在了");*/
            //可自定义异常
            throw new ServiceException("记录可能已经不存在了");

        }
        return row;
    }
}
